//! Header for the ICommand interfaceclass
#ifndef MACROCOMMAND_H
#define MACROCOMMAND_H

#include <list>
//#include "Device.h"
#include "ICommand.h"

//! Concrete macro command
/*!
	This command is a macro command. It can consist of
	multiple commands which are all invoked when execute is called.
	\class MacroCommand
	\author Thomas Pfeiffer
	\date 21.12.2012
*/
class MacroCommand : public ICommand {
public:

	//! Adds another command to the commands list
	void AddCommand(ICommand * com);

	void Execute();
	
	void Undo();

private:
	std::list<ICommand*> mCommands;
};

#endif